//auto gen by paipai.java.augogen ver 3.0.0
//author skyzhuang
//source idl: com.erp.acaccount.dao.idl.AddAndUpdateACItemsReq.java


#ifndef ERP_ACACCOUNT_DDO_CACITEMSDDO_BY_AUTOGEN_V5_H
#define ERP_ACACCOUNT_DDO_CACITEMSDDO_BY_AUTOGEN_V5_H


#include "app_platform/intf_serializable.h"
#include <bitset>
#include <string>
#include <sstream>
#include <iostream>


namespace erp
{
namespace acaccount
{
namespace ddo
{


class CACItemsDdo : public ISerializable
{
	public:
		std::string m_sLastErrMsg;///<错误信息

		/**
		 *  版本号   
		 *
		 * 版本 >= 0
		 */
		uint32_t dwVersion;

		/**
		 * cVersion_u uflag field
		 */
		uint8_t cVersion_u; //optional flag

		/**
		 * 会计项目信息SysNo
		 *
		 * 版本 >= 0
		 */
		uint64_t ddwACItemsSysNo;

		/**
		 * cACItemsSysNo_u uflag field
		 */
		uint8_t cACItemsSysNo_u; //optional flag

		/**
		 * 父会计项目信息SysNo
		 *
		 * 版本 >= 0
		 */
		uint64_t ddwParentACItemsSysNo;

		/**
		 * cParentACItemsSysNo_u uflag field
		 */
		uint8_t cParentACItemsSysNo_u; //optional flag

		/**
		 * 项目名称
		 *
		 * 版本 >= 0
		 */
		std::string strFACItemsName;

		/**
		 * cFACItemsName_u uflag field
		 */
		uint8_t cFACItemsName_u; //optional flag

		/**
		 * 会计项目信息类型
		 *
		 * 版本 >= 0
		 */
		uint16_t wACItemsType;

		/**
		 * cACItemsType_u uflag field
		 */
		uint8_t cACItemsType_u; //optional flag

		/**
		 * 备注
		 *
		 * 版本 >= 0
		 */
		std::string strComment;

		/**
		 * cComment_u uflag field
		 */
		uint8_t cComment_u; //optional flag

		/**
		 * 会计项目信息属性,只读
		 *
		 * 版本 >= 0
		 */
		std::bitset<32>  bitsetACItemsProperty;

		/**
		 * cACItemsProperty_u uflag field
		 */
		uint8_t cACItemsProperty_u; //optional flag

		/**
		 * 会计项目信息属性,设置
		 *
		 * 版本 >= 0
		 */
		std::bitset<32>  bitsetACItemsPropertyInclude;

		/**
		 * cACItemsPropertyInclude_u uflag field
		 */
		uint8_t cACItemsPropertyInclude_u; //optional flag

		/**
		 * 会计项目信息属性,取消
		 *
		 * 版本 >= 0
		 */
		std::bitset<32>  bitsetACItemsPropertyExclude;

		/**
		 * cACItemsPropertyExclude_u uflag field
		 */
		uint8_t cACItemsPropertyExclude_u; //optional flag

		/**
		 * 会计项目信息状态
		 *
		 * 版本 >= 0
		 */
		uint32_t dwACItemsStatus;

		/**
		 * cACItemsStatus_u uflag field
		 */
		uint8_t cACItemsStatus_u; //optional flag

		/**
		 * 创建人SysNo
		 *
		 * 版本 >= 0
		 */
		uint64_t ddwCreatorSysNo;

		/**
		 * cCreatorSysNo_u uflag field
		 */
		uint8_t cCreatorSysNo_u; //optional flag

		/**
		 * 创建时间
		 *
		 * 版本 >= 0
		 */
		uint32_t dwRowCreatDate;

		/**
		 * cRowCreatDate_u uflag field
		 */
		uint8_t cRowCreatDate_u; //optional flag

		/**
		 * 编辑者SysNo
		 *
		 * 版本 >= 0
		 */
		uint64_t ddwModifierSysNo;

		/**
		 * cModifierSysNo_u uflag field
		 */
		uint8_t cModifierSysNo_u; //optional flag

		/**
		 * 编辑时间
		 *
		 * 版本 >= 0
		 */
		uint32_t dwRowModifyDate;

		/**
		 * cRowModifyDate_u uflag field
		 */
		uint8_t cRowModifyDate_u; //optional flag




	public:
		CACItemsDdo():
		dwVersion(0),
		cVersion_u(0),
		ddwACItemsSysNo(0),
		cACItemsSysNo_u(0),
		ddwParentACItemsSysNo(0),
		cParentACItemsSysNo_u(0),
		cFACItemsName_u(0),
		wACItemsType(0),
		cACItemsType_u(0),
		cComment_u(0),
		cACItemsProperty_u(0),
		cACItemsPropertyInclude_u(0),
		cACItemsPropertyExclude_u(0),
		dwACItemsStatus(0),
		cACItemsStatus_u(0),
		ddwCreatorSysNo(0),
		cCreatorSysNo_u(0),
		dwRowCreatDate(0),
		cRowCreatDate_u(0),
		ddwModifierSysNo(0),
		cModifierSysNo_u(0),
		dwRowModifyDate(0),
		cRowModifyDate_u(0) {}
				CACItemsDdo& operator = (const CACItemsDdo& obj){

			this->dwVersion = obj.dwVersion;
			this->ddwACItemsSysNo = obj.ddwACItemsSysNo;
			this->ddwParentACItemsSysNo = obj.ddwParentACItemsSysNo;
			this->strFACItemsName = obj.strFACItemsName;
			this->wACItemsType = obj.wACItemsType;
			this->strComment = obj.strComment;
			this->bitsetACItemsProperty = obj.bitsetACItemsProperty;
			this->bitsetACItemsPropertyInclude = obj.bitsetACItemsPropertyInclude;
			this->bitsetACItemsPropertyExclude = obj.bitsetACItemsPropertyExclude;
			this->dwACItemsStatus = obj.dwACItemsStatus;
			this->ddwCreatorSysNo = obj.ddwCreatorSysNo;
			this->dwRowCreatDate = obj.dwRowCreatDate;
			this->ddwModifierSysNo = obj.ddwModifierSysNo;
			this->dwRowModifyDate = obj.dwRowModifyDate;
			this->cVersion_u = obj.cVersion_u;
			this->cACItemsSysNo_u = obj.cACItemsSysNo_u;
			this->cParentACItemsSysNo_u = obj.cParentACItemsSysNo_u;
			this->cFACItemsName_u = obj.cFACItemsName_u;
			this->cACItemsType_u = obj.cACItemsType_u;
			this->cComment_u = obj.cComment_u;
			this->cACItemsProperty_u = obj.cACItemsProperty_u;
			this->cACItemsPropertyInclude_u = obj.cACItemsPropertyInclude_u;
			this->cACItemsPropertyExclude_u = obj.cACItemsPropertyExclude_u;
			this->cACItemsStatus_u = obj.cACItemsStatus_u;
			this->cCreatorSysNo_u = obj.cCreatorSysNo_u;
			this->cRowCreatDate_u = obj.cRowCreatDate_u;
			this->cModifierSysNo_u = obj.cModifierSysNo_u;
			this->cRowModifyDate_u = obj.cRowModifyDate_u;
			return *this;
		}

	public:


		/**
		 * 是否设置 版本号   了
		 * 
		 * @param uint32_t:dwVersion
		 *  
		 * 
		 */
		 bool  IsVersionSet() const{
				 return  cVersion_u != 0;
		}


		/**
		 * 获取uflag 版本号   了
		 * 
		 * @param uint32_t:dwVersion
		 *  
		 * 
		 */
		 const uint8_t   GetVersionUFlag() const{
				 return  cVersion_u;
		}


		/**
		 * 设置 版本号   
		 * 
		 * @param uint32_t:dwVersion
		 *  
		 * 
		 */
		 void  SetVersion( const uint32_t& sVal, uint8_t cUFlag=1){
				dwVersion = sVal;
				cVersion_u = cUFlag;
		}


		/**
		 * 获取 版本号   
		 * 
		 * @return dwVersion value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetVersion() const {
				return dwVersion;
		}


		/**
		 * 是否设置会计项目信息SysNo了
		 * 
		 * @param uint64_t:ddwACItemsSysNo
		 *  
		 * 
		 */
		 bool  IsACItemsSysNoSet() const{
				 return  cACItemsSysNo_u != 0;
		}


		/**
		 * 获取uflag会计项目信息SysNo了
		 * 
		 * @param uint64_t:ddwACItemsSysNo
		 *  
		 * 
		 */
		 const uint8_t   GetACItemsSysNoUFlag() const{
				 return  cACItemsSysNo_u;
		}


		/**
		 * 设置会计项目信息SysNo
		 * 
		 * @param uint64_t:ddwACItemsSysNo
		 *  
		 * 
		 */
		 void  SetACItemsSysNo( const uint64_t& sVal, uint8_t cUFlag=1){
				ddwACItemsSysNo = sVal;
				cACItemsSysNo_u = cUFlag;
		}


		/**
		 * 获取会计项目信息SysNo
		 * 
		 * @return ddwACItemsSysNo value 类型为:uint64_t
		 * 
		 */
		 const uint64_t&  GetACItemsSysNo() const {
				return ddwACItemsSysNo;
		}


		/**
		 * 是否设置父会计项目信息SysNo了
		 * 
		 * @param uint64_t:ddwParentACItemsSysNo
		 *  
		 * 
		 */
		 bool  IsParentACItemsSysNoSet() const{
				 return  cParentACItemsSysNo_u != 0;
		}


		/**
		 * 获取uflag父会计项目信息SysNo了
		 * 
		 * @param uint64_t:ddwParentACItemsSysNo
		 *  
		 * 
		 */
		 const uint8_t   GetParentACItemsSysNoUFlag() const{
				 return  cParentACItemsSysNo_u;
		}


		/**
		 * 设置父会计项目信息SysNo
		 * 
		 * @param uint64_t:ddwParentACItemsSysNo
		 *  
		 * 
		 */
		 void  SetParentACItemsSysNo( const uint64_t& sVal, uint8_t cUFlag=1){
				ddwParentACItemsSysNo = sVal;
				cParentACItemsSysNo_u = cUFlag;
		}


		/**
		 * 获取父会计项目信息SysNo
		 * 
		 * @return ddwParentACItemsSysNo value 类型为:uint64_t
		 * 
		 */
		 const uint64_t&  GetParentACItemsSysNo() const {
				return ddwParentACItemsSysNo;
		}


		/**
		 * 是否设置项目名称了
		 * 
		 * @param std::string:strFACItemsName
		 *  
		 * 
		 */
		 bool  IsFACItemsNameSet() const{
				 return  cFACItemsName_u != 0;
		}


		/**
		 * 获取uflag项目名称了
		 * 
		 * @param std::string:strFACItemsName
		 *  
		 * 
		 */
		 const uint8_t   GetFACItemsNameUFlag() const{
				 return  cFACItemsName_u;
		}


		/**
		 * 设置项目名称
		 * 
		 * @param std::string:strFACItemsName
		 *  
		 * 
		 */
		 void  SetFACItemsName( const std::string& sVal, uint8_t cUFlag=1){
				strFACItemsName = sVal;
				cFACItemsName_u = cUFlag;
		}


		/**
		 * 获取项目名称
		 * 
		 * @return strFACItemsName value 类型为:std::string
		 * 
		 */
		 const std::string&  GetFACItemsName() const {
				return strFACItemsName;
		}


		/**
		 * 获取项目名称
		 * 
		 * @return strFACItemsName value 类型为:std::string
		 * 
		 */
		 std::string&  GetFACItemsName() {
				return strFACItemsName;
		}


		/**
		 * 是否设置会计项目信息类型了
		 * 
		 * @param uint16_t:wACItemsType
		 *  
		 * 
		 */
		 bool  IsACItemsTypeSet() const{
				 return  cACItemsType_u != 0;
		}


		/**
		 * 获取uflag会计项目信息类型了
		 * 
		 * @param uint16_t:wACItemsType
		 *  
		 * 
		 */
		 const uint8_t   GetACItemsTypeUFlag() const{
				 return  cACItemsType_u;
		}


		/**
		 * 设置会计项目信息类型
		 * 
		 * @param uint16_t:wACItemsType
		 *  
		 * 
		 */
		 void  SetACItemsType( const uint16_t& sVal, uint8_t cUFlag=1){
				wACItemsType = sVal;
				cACItemsType_u = cUFlag;
		}


		/**
		 * 获取会计项目信息类型
		 * 
		 * @return wACItemsType value 类型为:uint16_t
		 * 
		 */
		 const uint16_t&  GetACItemsType() const {
				return wACItemsType;
		}


		/**
		 * 是否设置备注了
		 * 
		 * @param std::string:strComment
		 *  
		 * 
		 */
		 bool  IsCommentSet() const{
				 return  cComment_u != 0;
		}


		/**
		 * 获取uflag备注了
		 * 
		 * @param std::string:strComment
		 *  
		 * 
		 */
		 const uint8_t   GetCommentUFlag() const{
				 return  cComment_u;
		}


		/**
		 * 设置备注
		 * 
		 * @param std::string:strComment
		 *  
		 * 
		 */
		 void  SetComment( const std::string& sVal, uint8_t cUFlag=1){
				strComment = sVal;
				cComment_u = cUFlag;
		}


		/**
		 * 获取备注
		 * 
		 * @return strComment value 类型为:std::string
		 * 
		 */
		 const std::string&  GetComment() const {
				return strComment;
		}


		/**
		 * 获取备注
		 * 
		 * @return strComment value 类型为:std::string
		 * 
		 */
		 std::string&  GetComment() {
				return strComment;
		}


		/**
		 * 是否设置会计项目信息属性,只读了
		 * 
		 * @param std::bitset<32> :bitsetACItemsProperty
		 *  
		 * 
		 */
		 bool  IsACItemsPropertySet() const{
				 return  cACItemsProperty_u != 0;
		}


		/**
		 * 获取uflag会计项目信息属性,只读了
		 * 
		 * @param std::bitset<32> :bitsetACItemsProperty
		 *  
		 * 
		 */
		 const uint8_t   GetACItemsPropertyUFlag() const{
				 return  cACItemsProperty_u;
		}


		/**
		 * 设置会计项目信息属性,只读
		 * 
		 * @param std::bitset<32> :bitsetACItemsProperty
		 *  
		 * 
		 */
		 void  SetACItemsProperty( const std::bitset<32> & sVal, uint8_t cUFlag=1){
				bitsetACItemsProperty = sVal;
				cACItemsProperty_u = cUFlag;
		}


		/**
		 * 获取会计项目信息属性,只读
		 * 
		 * @return bitsetACItemsProperty value 类型为:std::bitset<32> 
		 * 
		 */
		 const std::bitset<32> &  GetACItemsProperty() const {
				return bitsetACItemsProperty;
		}


		/**
		 * 获取会计项目信息属性,只读
		 * 
		 * @return bitsetACItemsProperty value 类型为:std::bitset<32> 
		 * 
		 */
		 std::bitset<32> &  GetACItemsProperty() {
				return bitsetACItemsProperty;
		}


		/**
		 * 是否设置会计项目信息属性,设置了
		 * 
		 * @param std::bitset<32> :bitsetACItemsPropertyInclude
		 *  
		 * 
		 */
		 bool  IsACItemsPropertyIncludeSet() const{
				 return  cACItemsPropertyInclude_u != 0;
		}


		/**
		 * 获取uflag会计项目信息属性,设置了
		 * 
		 * @param std::bitset<32> :bitsetACItemsPropertyInclude
		 *  
		 * 
		 */
		 const uint8_t   GetACItemsPropertyIncludeUFlag() const{
				 return  cACItemsPropertyInclude_u;
		}


		/**
		 * 设置会计项目信息属性,设置
		 * 
		 * @param std::bitset<32> :bitsetACItemsPropertyInclude
		 *  
		 * 
		 */
		 void  SetACItemsPropertyInclude( const std::bitset<32> & sVal, uint8_t cUFlag=1){
				bitsetACItemsPropertyInclude = sVal;
				cACItemsPropertyInclude_u = cUFlag;
		}


		/**
		 * 获取会计项目信息属性,设置
		 * 
		 * @return bitsetACItemsPropertyInclude value 类型为:std::bitset<32> 
		 * 
		 */
		 const std::bitset<32> &  GetACItemsPropertyInclude() const {
				return bitsetACItemsPropertyInclude;
		}


		/**
		 * 获取会计项目信息属性,设置
		 * 
		 * @return bitsetACItemsPropertyInclude value 类型为:std::bitset<32> 
		 * 
		 */
		 std::bitset<32> &  GetACItemsPropertyInclude() {
				return bitsetACItemsPropertyInclude;
		}


		/**
		 * 是否设置会计项目信息属性,取消了
		 * 
		 * @param std::bitset<32> :bitsetACItemsPropertyExclude
		 *  
		 * 
		 */
		 bool  IsACItemsPropertyExcludeSet() const{
				 return  cACItemsPropertyExclude_u != 0;
		}


		/**
		 * 获取uflag会计项目信息属性,取消了
		 * 
		 * @param std::bitset<32> :bitsetACItemsPropertyExclude
		 *  
		 * 
		 */
		 const uint8_t   GetACItemsPropertyExcludeUFlag() const{
				 return  cACItemsPropertyExclude_u;
		}


		/**
		 * 设置会计项目信息属性,取消
		 * 
		 * @param std::bitset<32> :bitsetACItemsPropertyExclude
		 *  
		 * 
		 */
		 void  SetACItemsPropertyExclude( const std::bitset<32> & sVal, uint8_t cUFlag=1){
				bitsetACItemsPropertyExclude = sVal;
				cACItemsPropertyExclude_u = cUFlag;
		}


		/**
		 * 获取会计项目信息属性,取消
		 * 
		 * @return bitsetACItemsPropertyExclude value 类型为:std::bitset<32> 
		 * 
		 */
		 const std::bitset<32> &  GetACItemsPropertyExclude() const {
				return bitsetACItemsPropertyExclude;
		}


		/**
		 * 获取会计项目信息属性,取消
		 * 
		 * @return bitsetACItemsPropertyExclude value 类型为:std::bitset<32> 
		 * 
		 */
		 std::bitset<32> &  GetACItemsPropertyExclude() {
				return bitsetACItemsPropertyExclude;
		}


		/**
		 * 是否设置会计项目信息状态了
		 * 
		 * @param uint32_t:dwACItemsStatus
		 *  
		 * 
		 */
		 bool  IsACItemsStatusSet() const{
				 return  cACItemsStatus_u != 0;
		}


		/**
		 * 获取uflag会计项目信息状态了
		 * 
		 * @param uint32_t:dwACItemsStatus
		 *  
		 * 
		 */
		 const uint8_t   GetACItemsStatusUFlag() const{
				 return  cACItemsStatus_u;
		}


		/**
		 * 设置会计项目信息状态
		 * 
		 * @param uint32_t:dwACItemsStatus
		 *  
		 * 
		 */
		 void  SetACItemsStatus( const uint32_t& sVal, uint8_t cUFlag=1){
				dwACItemsStatus = sVal;
				cACItemsStatus_u = cUFlag;
		}


		/**
		 * 获取会计项目信息状态
		 * 
		 * @return dwACItemsStatus value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetACItemsStatus() const {
				return dwACItemsStatus;
		}


		/**
		 * 是否设置创建人SysNo了
		 * 
		 * @param uint64_t:ddwCreatorSysNo
		 *  
		 * 
		 */
		 bool  IsCreatorSysNoSet() const{
				 return  cCreatorSysNo_u != 0;
		}


		/**
		 * 获取uflag创建人SysNo了
		 * 
		 * @param uint64_t:ddwCreatorSysNo
		 *  
		 * 
		 */
		 const uint8_t   GetCreatorSysNoUFlag() const{
				 return  cCreatorSysNo_u;
		}


		/**
		 * 设置创建人SysNo
		 * 
		 * @param uint64_t:ddwCreatorSysNo
		 *  
		 * 
		 */
		 void  SetCreatorSysNo( const uint64_t& sVal, uint8_t cUFlag=1){
				ddwCreatorSysNo = sVal;
				cCreatorSysNo_u = cUFlag;
		}


		/**
		 * 获取创建人SysNo
		 * 
		 * @return ddwCreatorSysNo value 类型为:uint64_t
		 * 
		 */
		 const uint64_t&  GetCreatorSysNo() const {
				return ddwCreatorSysNo;
		}


		/**
		 * 是否设置创建时间了
		 * 
		 * @param uint32_t:dwRowCreatDate
		 *  
		 * 
		 */
		 bool  IsRowCreatDateSet() const{
				 return  cRowCreatDate_u != 0;
		}


		/**
		 * 获取uflag创建时间了
		 * 
		 * @param uint32_t:dwRowCreatDate
		 *  
		 * 
		 */
		 const uint8_t   GetRowCreatDateUFlag() const{
				 return  cRowCreatDate_u;
		}


		/**
		 * 设置创建时间
		 * 
		 * @param uint32_t:dwRowCreatDate
		 *  
		 * 
		 */
		 void  SetRowCreatDate( const uint32_t& sVal, uint8_t cUFlag=1){
				dwRowCreatDate = sVal;
				cRowCreatDate_u = cUFlag;
		}


		/**
		 * 获取创建时间
		 * 
		 * @return dwRowCreatDate value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetRowCreatDate() const {
				return dwRowCreatDate;
		}


		/**
		 * 是否设置编辑者SysNo了
		 * 
		 * @param uint64_t:ddwModifierSysNo
		 *  
		 * 
		 */
		 bool  IsModifierSysNoSet() const{
				 return  cModifierSysNo_u != 0;
		}


		/**
		 * 获取uflag编辑者SysNo了
		 * 
		 * @param uint64_t:ddwModifierSysNo
		 *  
		 * 
		 */
		 const uint8_t   GetModifierSysNoUFlag() const{
				 return  cModifierSysNo_u;
		}


		/**
		 * 设置编辑者SysNo
		 * 
		 * @param uint64_t:ddwModifierSysNo
		 *  
		 * 
		 */
		 void  SetModifierSysNo( const uint64_t& sVal, uint8_t cUFlag=1){
				ddwModifierSysNo = sVal;
				cModifierSysNo_u = cUFlag;
		}


		/**
		 * 获取编辑者SysNo
		 * 
		 * @return ddwModifierSysNo value 类型为:uint64_t
		 * 
		 */
		 const uint64_t&  GetModifierSysNo() const {
				return ddwModifierSysNo;
		}


		/**
		 * 是否设置编辑时间了
		 * 
		 * @param uint32_t:dwRowModifyDate
		 *  
		 * 
		 */
		 bool  IsRowModifyDateSet() const{
				 return  cRowModifyDate_u != 0;
		}


		/**
		 * 获取uflag编辑时间了
		 * 
		 * @param uint32_t:dwRowModifyDate
		 *  
		 * 
		 */
		 const uint8_t   GetRowModifyDateUFlag() const{
				 return  cRowModifyDate_u;
		}


		/**
		 * 设置编辑时间
		 * 
		 * @param uint32_t:dwRowModifyDate
		 *  
		 * 
		 */
		 void  SetRowModifyDate( const uint32_t& sVal, uint8_t cUFlag=1){
				dwRowModifyDate = sVal;
				cRowModifyDate_u = cUFlag;
		}


		/**
		 * 获取编辑时间
		 * 
		 * @return dwRowModifyDate value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetRowModifyDate() const {
				return dwRowModifyDate;
		}

		virtual bool Serialize(CByteStreamNetwork& bs){
		
			uint32_t dwMyLen = 0;
			if(bs.isStoring()) //for write in buffer
			{
				//can not larger than 1 M.
				CByteStreamNetwork bsDummy(NULL, 1024 * 1024, false);
				//bsDummy for precheck the xo size...
				bsDummy.isStoring(true);
				Serialize_i(bsDummy);
				dwMyLen = bsDummy.getWrittenLength();
				bs & dwMyLen;
				Serialize_i(bs);
			}
			else
			{    //for read from buffer
				bs & dwMyLen;
				uint32_t dwReadedLen = bs.getReadLength();
				Serialize_i(bs);
				dwReadedLen = bs.getReadLength() - dwReadedLen;
				// dwReadedLen for the size of xo
				if( dwReadedLen > dwMyLen ){
					return false;
				}
				//go through the unwanted mem position...
				bs.goForward( dwMyLen - dwReadedLen );
			}

			return bs.isGood();
		}

		bool Serialize_i(CByteStreamNetwork& bsTmp){

			bsTmp & dwVersion; // 序列化 版本号    类型为uint32_t
			bsTmp & cVersion_u; // 序列化uflag 类型为uint8_t
			bsTmp & ddwACItemsSysNo; // 序列化会计项目信息SysNo 类型为uint64_t
			bsTmp & cACItemsSysNo_u; // 序列化uflag 类型为uint8_t
			bsTmp & ddwParentACItemsSysNo; // 序列化父会计项目信息SysNo 类型为uint64_t
			bsTmp & cParentACItemsSysNo_u; // 序列化uflag 类型为uint8_t
			bsTmp & strFACItemsName; // 序列化项目名称 类型为String
			bsTmp & cFACItemsName_u; // 序列化uflag 类型为uint8_t
			bsTmp & wACItemsType; // 序列化会计项目信息类型 类型为uint16_t
			bsTmp & cACItemsType_u; // 序列化uflag 类型为uint8_t
			bsTmp & strComment; // 序列化备注 类型为String
			bsTmp & cComment_u; // 序列化uflag 类型为uint8_t
			bsTmp & bitsetACItemsProperty; // 序列化会计项目信息属性,只读 类型为BitSet
			bsTmp & cACItemsProperty_u; // 序列化uflag 类型为uint8_t
			bsTmp & bitsetACItemsPropertyInclude; // 序列化会计项目信息属性,设置 类型为BitSet
			bsTmp & cACItemsPropertyInclude_u; // 序列化uflag 类型为uint8_t
			bsTmp & bitsetACItemsPropertyExclude; // 序列化会计项目信息属性,取消 类型为BitSet
			bsTmp & cACItemsPropertyExclude_u; // 序列化uflag 类型为uint8_t
			bsTmp & dwACItemsStatus; // 序列化会计项目信息状态 类型为uint32_t
			bsTmp & cACItemsStatus_u; // 序列化uflag 类型为uint8_t
			bsTmp & ddwCreatorSysNo; // 序列化创建人SysNo 类型为uint64_t
			bsTmp & cCreatorSysNo_u; // 序列化uflag 类型为uint8_t
			bsTmp & dwRowCreatDate; // 序列化创建时间 类型为uint32_t
			bsTmp & cRowCreatDate_u; // 序列化uflag 类型为uint8_t
			bsTmp & ddwModifierSysNo; // 序列化编辑者SysNo 类型为uint64_t
			bsTmp & cModifierSysNo_u; // 序列化uflag 类型为uint8_t
			bsTmp & dwRowModifyDate; // 序列化编辑时间 类型为uint32_t
			bsTmp & cRowModifyDate_u; // 序列化uflag 类型为uint8_t
			return bsTmp.isGood();
		}

		const char* GetLastErrMsg() const{
			return m_sLastErrMsg.c_str();
		}

		bool VerifyACItemsDdo(){

			if(!IsVersionSet()){
				m_sLastErrMsg = "Miss Param:version";
				return false;
			}

			if(!IsACItemsSysNoSet()){
				m_sLastErrMsg = "Miss Param:aCItemsSysNo";
				return false;
			}

			if(!IsParentACItemsSysNoSet()){
				m_sLastErrMsg = "Miss Param:parentACItemsSysNo";
				return false;
			}

			if(!IsFACItemsNameSet()){
				m_sLastErrMsg = "Miss Param:fACItemsName";
				return false;
			}

			if(!IsACItemsTypeSet()){
				m_sLastErrMsg = "Miss Param:aCItemsType";
				return false;
			}

			if(!IsCommentSet()){
				m_sLastErrMsg = "Miss Param:comment";
				return false;
			}

			if(!IsACItemsPropertySet()){
				m_sLastErrMsg = "Miss Param:aCItemsProperty";
				return false;
			}

			if(!IsACItemsPropertyIncludeSet()){
				m_sLastErrMsg = "Miss Param:aCItemsPropertyInclude";
				return false;
			}

			if(!IsACItemsPropertyExcludeSet()){
				m_sLastErrMsg = "Miss Param:aCItemsPropertyExclude";
				return false;
			}

			if(!IsACItemsStatusSet()){
				m_sLastErrMsg = "Miss Param:aCItemsStatus";
				return false;
			}

			if(!IsCreatorSysNoSet()){
				m_sLastErrMsg = "Miss Param:creatorSysNo";
				return false;
			}

			if(!IsRowCreatDateSet()){
				m_sLastErrMsg = "Miss Param:rowCreatDate";
				return false;
			}

			if(!IsModifierSysNoSet()){
				m_sLastErrMsg = "Miss Param:modifierSysNo";
				return false;
			}

			if(!IsRowModifyDateSet()){
				m_sLastErrMsg = "Miss Param:rowModifyDate";
				return false;
			}
			return true;
		}

		void DumpData(std::ostream& oss) const{
		
			oss<<"[dwVersion:"<<dwVersion<<"] ";
			oss<<"[cVersion_u:"<<(int)cVersion_u<<"] ";
			oss<<"[ddwACItemsSysNo:"<<ddwACItemsSysNo<<"] ";
			oss<<"[cACItemsSysNo_u:"<<(int)cACItemsSysNo_u<<"] ";
			oss<<"[ddwParentACItemsSysNo:"<<ddwParentACItemsSysNo<<"] ";
			oss<<"[cParentACItemsSysNo_u:"<<(int)cParentACItemsSysNo_u<<"] ";
			oss<<"[strFACItemsName:"<<strFACItemsName<<"] ";
			oss<<"[cFACItemsName_u:"<<(int)cFACItemsName_u<<"] ";
			oss<<"[wACItemsType:"<<(int)wACItemsType<<"] ";
			oss<<"[cACItemsType_u:"<<(int)cACItemsType_u<<"] ";
			oss<<"[strComment:"<<strComment<<"] ";
			oss<<"[cComment_u:"<<(int)cComment_u<<"] ";
		//嵌套内容有错误，建议使用dumpDataTree方法，复杂数据格式更直观！
			oss<<"[cACItemsProperty_u:"<<(int)cACItemsProperty_u<<"] ";
		//嵌套内容有错误，建议使用dumpDataTree方法，复杂数据格式更直观！
			oss<<"[cACItemsPropertyInclude_u:"<<(int)cACItemsPropertyInclude_u<<"] ";
		//嵌套内容有错误，建议使用dumpDataTree方法，复杂数据格式更直观！
			oss<<"[cACItemsPropertyExclude_u:"<<(int)cACItemsPropertyExclude_u<<"] ";
			oss<<"[dwACItemsStatus:"<<dwACItemsStatus<<"] ";
			oss<<"[cACItemsStatus_u:"<<(int)cACItemsStatus_u<<"] ";
			oss<<"[ddwCreatorSysNo:"<<ddwCreatorSysNo<<"] ";
			oss<<"[cCreatorSysNo_u:"<<(int)cCreatorSysNo_u<<"] ";
			oss<<"[dwRowCreatDate:"<<dwRowCreatDate<<"] ";
			oss<<"[cRowCreatDate_u:"<<(int)cRowCreatDate_u<<"] ";
			oss<<"[ddwModifierSysNo:"<<ddwModifierSysNo<<"] ";
			oss<<"[cModifierSysNo_u:"<<(int)cModifierSysNo_u<<"] ";
			oss<<"[dwRowModifyDate:"<<dwRowModifyDate<<"] ";
			oss<<"[cRowModifyDate_u:"<<(int)cRowModifyDate_u<<"] ";
		
		}

		// codydeng提供,非常好的dump方法 ^-^  。。。。。
		template<typename T>
		T & DumpPlusData(T& oss){
			oss<<"dwVersion:"<<dwVersion;
			oss<<"[cVersion_u:"<<cVersion_u<<"] ";
			oss<<"ddwACItemsSysNo:"<<ddwACItemsSysNo;
			oss<<"[cACItemsSysNo_u:"<<cACItemsSysNo_u<<"] ";
			oss<<"ddwParentACItemsSysNo:"<<ddwParentACItemsSysNo;
			oss<<"[cParentACItemsSysNo_u:"<<cParentACItemsSysNo_u<<"] ";
			oss<<"strFACItemsName:"<<strFACItemsName;
			oss<<"[cFACItemsName_u:"<<cFACItemsName_u<<"] ";
			oss<<"wACItemsType:"<<wACItemsType;
			oss<<"[cACItemsType_u:"<<cACItemsType_u<<"] ";
			oss<<"strComment:"<<strComment;
			oss<<"[cComment_u:"<<cComment_u<<"] ";
			oss<<"bitsetACItemsProperty:"<<bitsetACItemsProperty;
			oss<<"[cACItemsProperty_u:"<<cACItemsProperty_u<<"] ";
			oss<<"bitsetACItemsPropertyInclude:"<<bitsetACItemsPropertyInclude;
			oss<<"[cACItemsPropertyInclude_u:"<<cACItemsPropertyInclude_u<<"] ";
			oss<<"bitsetACItemsPropertyExclude:"<<bitsetACItemsPropertyExclude;
			oss<<"[cACItemsPropertyExclude_u:"<<cACItemsPropertyExclude_u<<"] ";
			oss<<"dwACItemsStatus:"<<dwACItemsStatus;
			oss<<"[cACItemsStatus_u:"<<cACItemsStatus_u<<"] ";
			oss<<"ddwCreatorSysNo:"<<ddwCreatorSysNo;
			oss<<"[cCreatorSysNo_u:"<<cCreatorSysNo_u<<"] ";
			oss<<"dwRowCreatDate:"<<dwRowCreatDate;
			oss<<"[cRowCreatDate_u:"<<cRowCreatDate_u<<"] ";
			oss<<"ddwModifierSysNo:"<<ddwModifierSysNo;
			oss<<"[cModifierSysNo_u:"<<cModifierSysNo_u<<"] ";
			oss<<"dwRowModifyDate:"<<dwRowModifyDate;
			oss<<"[cRowModifyDate_u:"<<cRowModifyDate_u<<"] ";
			return oss;
		}

		// wileywang提供,树形dump方法 ^-^  。。。。。
		void DumpDataTree(std::ostream& os, int ident = 0)const {
			g_pprint(os, "dwVersion", dwVersion, ident);
			g_pprint(os, "cVersion_u", cVersion_u, ident);
			g_pprint(os, "ddwACItemsSysNo", ddwACItemsSysNo, ident);
			g_pprint(os, "cACItemsSysNo_u", cACItemsSysNo_u, ident);
			g_pprint(os, "ddwParentACItemsSysNo", ddwParentACItemsSysNo, ident);
			g_pprint(os, "cParentACItemsSysNo_u", cParentACItemsSysNo_u, ident);
			g_pprint(os, "strFACItemsName", strFACItemsName, ident);
			g_pprint(os, "cFACItemsName_u", cFACItemsName_u, ident);
			g_pprint(os, "wACItemsType", wACItemsType, ident);
			g_pprint(os, "cACItemsType_u", cACItemsType_u, ident);
			g_pprint(os, "strComment", strComment, ident);
			g_pprint(os, "cComment_u", cComment_u, ident);
			g_pprint(os, "bitsetACItemsProperty", bitsetACItemsProperty, ident);
			g_pprint(os, "cACItemsProperty_u", cACItemsProperty_u, ident);
			g_pprint(os, "bitsetACItemsPropertyInclude", bitsetACItemsPropertyInclude, ident);
			g_pprint(os, "cACItemsPropertyInclude_u", cACItemsPropertyInclude_u, ident);
			g_pprint(os, "bitsetACItemsPropertyExclude", bitsetACItemsPropertyExclude, ident);
			g_pprint(os, "cACItemsPropertyExclude_u", cACItemsPropertyExclude_u, ident);
			g_pprint(os, "dwACItemsStatus", dwACItemsStatus, ident);
			g_pprint(os, "cACItemsStatus_u", cACItemsStatus_u, ident);
			g_pprint(os, "ddwCreatorSysNo", ddwCreatorSysNo, ident);
			g_pprint(os, "cCreatorSysNo_u", cCreatorSysNo_u, ident);
			g_pprint(os, "dwRowCreatDate", dwRowCreatDate, ident);
			g_pprint(os, "cRowCreatDate_u", cRowCreatDate_u, ident);
			g_pprint(os, "ddwModifierSysNo", ddwModifierSysNo, ident);
			g_pprint(os, "cModifierSysNo_u", cModifierSysNo_u, ident);
			g_pprint(os, "dwRowModifyDate", dwRowModifyDate, ident);
			g_pprint(os, "cRowModifyDate_u", cRowModifyDate_u, ident);
		}
		
		//提供ToString借口，默认为DumpData格式，请按需要进行修改
		std::string ToString() const{
			std::stringstream ss;
			DumpData(ss);
			return ss.str();
		}

/**
 ********************以下信息是每个版本的字段********************
 */

};

}
}
}

#endif /* ERP_ACACCOUNT_DDO_CACITEMSDDO_BY_AUTOGEN_V5_H */
